package bb.lanxing.mvp.model.i;

import bb.lanxing.adapter.mine.HistoryListAdapter;
import bb.lanxing.model.database.Trackpoint;
import bb.lanxing.model.database.Workout;
import bb.lanxing.model.json.ServerCodeJson;
import bb.lanxing.model.json.ServerJson;
import bb.lanxing.model.json.WorkoutSlopeBean;
import bb.lanxing.model.json.WorkoutSlopePointBean;
import java.util.HashMap;
import java.util.List;
import rx.Observable;

public interface IHistoryModel extends IWorkoutModel {
    Observable<Workout> deleteWorkout(Workout workout);

    Observable<ServerCodeJson> getHeatRecordForDate(String date);

    Observable<List<HistoryListAdapter.MonthDesc>> getMonthData(int year, long userId);

    Observable<HistoryListAdapter.MonthDesc> getMonthInfo(long userId, int year, String month);

    Observable<List<Integer>> getUnUploadWorkoutYears(long userId);

    Observable<List<Integer>> getUserYearByServer(long userId);

    Observable<List<Integer>> getUserYearCache(long userId);

    Observable<ServerJson> hideMapWorkout(long workoutServerId, int hide);

    Observable<Workout> hideWorkout(Workout workout);

    boolean isDownloaded(Workout workout);

    Observable<WorkoutSlopeBean> loadSlope(long workoutServerId);

    Observable<WorkoutSlopePointBean> loadSlopePoint(long workoutServerId, int type);

    Observable<List<HistoryListAdapter.MonthDesc>> requestWorkout(int year, long userId, HashMap<String, List<Workout>> localData);

    Observable<Workout> requestWorkoutDetail(Workout workout);

    Observable<List<Trackpoint>> requestWorkoutPoint(Workout workout);
}
